﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using WindowsLive.Writer.Api;

namespace WikiPediaPlugin
{
    public class PluginSettings
    {
        private IProperties m_properties;
        private const string NOGUI = "NOGUI";
        private const string LANG = "LANG";

        public string[] languagecodes = { "af", "als", "ar", "an", "frp", "ast", "gn", "ay", "az", "bm", 
                                     "zh-min-nan", "map-bms", "ba", "be", "be-x-old", "bar", "bs", 
                                     "br", "bg", "ca", "cv", "ceb", "cs", "cy", "da", "pdc", "de", 
                                     "dv", "et", "el", "en", "es", "eo", "eu", "fa", "fr", "fy", "fur",
                                     "ga", "gd", "gl", "gu", "ko", "hi", "hr", "io", "ilo", "id", "ia", 
                                     "xh", "is", "it", "he", "jv", "kw", "ky", "sw", "kg", "ht", "ku", 
                                     "lv", "lb", "lt", "li", "ln", "jbo", "hu", "mk", "mg", "ml", "mr", 
                                     "mzn", "ms", "cdo", "nl", "ja", "no", "nn", "nrm", "oc", "ps", "pl", 
                                     "ro", "rmy", "rm", "qu", "ru", "se", "sc", "sco", "scn", "simple", 
                                     "sk", "sl", "sr", "fi", "sv", "tl", "ta", "th", "vi", "tg", "tr", "tk",
                                     "uk", "vo", "fiu-vro", "wa", "yi", "zh-yue", "diq", "bat-smg", "zh" };

        public string[] languagenames = { "Afrikaans", "Alemannisch", "العربية", "Aragonés", "Arpetan", "Asturianu",
                                            "Avañe'ẽ", "Aymar", "Azərbaycan", "Bamanankan", "Bân-lâm-gú", "Basa Banyumasan",
                                            "Башҡорт", "Беларуская", "Беларуская (тарашкевіца)", "Boarisch", "Bosanski",
                                            "Brezhoneg", "Български", "Català", "Чăвашла", "Cebuano", "Česky", "Cymraeg",
                                            "Dansk", "Deitsch", "Deutsch", "ދިވެހިބަސް", "Eesti", "Ελληνικά", "English", "Español",
                                            "Esperanto", "Euskara", "فارسی", "Français", "Frysk", "Furlan", "Gaeilge",
                                            "Gàidhlig", "Galego", "ગુજરાતી", "한국어", "हिन्दी", "Hrvatski", "Ido", "Ilokano",
                                            "Bahasa Indonesia", "Interlingua", "isiXhosa", "Íslenska", "Italiano", "עברית", 
                                            "Basa Jawa", "Kernewek", "Кыргызча", "Kiswahili", "Kongo", "Kreyòl ayisyen", 
                                            "Kurdî / كوردی", "Latviešu", "Lëtzebuergesch", "Lietuvių", "Limburgs", "Lingála", 
                                            "Lojban", "Magyar", "Македонски", "Malagasy", "മലയാളം", "मराठी", "مَزِروني", 
                                            "Bahasa Melayu", "Mìng-dĕ̤ng-ngṳ̄", "Nederlands", "日本語", "‪Norsk (bokmål)‬", 
                                            "Norsk (nynorsk)‬", "Nouormand", "Occitan", "پښتو", "Polski", "Română", "Romani",
                                            "Rumantsch", "Runa Simi", "Русский", "Sámegiella", "Sardu", "Scots", "Sicilianu",
                                            "Simple English", "Slovenčina", "Slovenščina", "Српски / Srpski", "Suomi",
                                            "Svenska", "Tagalog", "தமிழ்", "ไทย", "Tiếng Việt", "Тоҷикӣ", "Türkçe", "Türkmen",
                                            "Українська", "Volapük", "Võro", "Walon", "ייִדיש", "粵語", "Zazaki", "Žemaitėška",
                                            "中文" };

        public PluginSettings(IProperties properties)
        {
            m_properties = properties;
        }

        public bool ShowGUI
        {
            get { return m_properties.GetBoolean(NOGUI, false); }
            set { m_properties.SetBoolean(NOGUI, value); }
        }

        public int LanguageNumber
        {
            get { return m_properties.GetInt(LANG, 30); }
            set { m_properties.SetInt(LANG, value); }
        }

        public string WikiCode(string orig)
        {
            string s = Regex.Replace(orig, @"<(.|\n)*?>", string.Empty);
            s = s.Replace("\r", "");
            s = s.Replace("\n", "");
            string wiki = s;
            if (!string.IsNullOrEmpty(s))
            {
                string[] words = s.Split(new char[] { ' ', ',' });
                string temp = string.Empty;
                foreach (string word in words)
                {
                    if (!string.IsNullOrEmpty(word))
                    {
                        temp = string.Format("{0}{1}", word[0].ToString().ToUpper(), word.Substring(1).ToLower());
                        wiki = wiki.Replace(word, temp);
                    }
                }
                wiki = wiki.Replace(" ", "_");
            }

            return wiki;
        }

    }
}
